import redis
from config.app_static_ import REDIS_HOST, REDIS_PORT, REDIS_DB, REDIS_PASSWORD

# 创建一个连接池
pool = redis.ConnectionPool(
    host=REDIS_HOST,
    port=REDIS_PORT,
    db=REDIS_DB,
    password=REDIS_PASSWORD
)

def get_redis_client():
    """
    :return: Redis 客户端实例
    """
    try:
        # 注意这里能这样的原因是每次都会分配不同的
        # 使用连接池创建 Redis 客户端
        redis_client = redis.Redis(connection_pool=pool,max_connections=50)

        return redis_client
    except Exception as e:
        return False


def parse_redis_data(redis_data):

    if not redis_data:  # 处理 `[]` 情况
        return None

    # 以下保持原有逻辑不变
    stream_name = redis_data[0][0]
    entries = redis_data[0][1]
    data=[]
    for i in entries:
        middle_data=i[1]
        middle_data['messages_id']=i[0]
        data.append(
            {
            'timestamp':i[0],
            'data':middle_data
             }
        )
    return {
        'stream_name':stream_name.decode('utf-8'),
        'data':data
    }


def get_last_message_id(redis_data):
    """
    从 Redis 数据中提取最后一条消息的 timestamp_id
    如果数据为空（如 `[]`），返回 None
    """
    # 检查空数据
    if not redis_data:  # 处理 `[]` 情况
        return '0'
    entries = redis_data[0][1]
    return entries[-1][0].decode('utf-8')

